
 1000  *SAVE S.MUL.16X16.65802.EVEN.FASTER
 1010  *--------------------------------
 1020         .OP 65802
 1030  *--------------------------------
 1040  A      .EQ 0,1
 1050  B      .EQ 2,3
 1060  P      .EQ 4,5,6,7
 1070  *--------------------------------
 1080  MUL.EVEN.FASTER
 1090         CLC
 1100         XCE          ENTER NATIVE MODE
 1110         REP #$20     16-BIT A-REGISTER
 1120         STZ P+2      MAKE SURE NO ADDEND IN HI-16
 1130         STZ P   (DELETE IF WANT AN ADDEND IN LO-16)
 1140         LDX #8
 1150         BRA .2       ...HOP OVER SHIFTS
 1160  *--------------------------------
 1170  .1     ASL P        DOUBLE THE PRODUCT
 1180         ROL P+2
 1190  .2     LDA A
 1200         AND ##$0080  LOOK AT SIGN OF LO-BYTE
 1210         BEQ .3       ...DON'T ADD MULTIPLICAND
 1220         CLC
 1230         LDA P
 1240         ADC B
 1250         STA P
 1260         BCC .3
 1270         INC P+2      ADD CARRY TO HI-16
 1280  *--------------------------------
 1290  .3     ASL A        SHIFT MULTIPLIER
 1300         BCC .4
 1310         CLC
 1320         LDA P+1      ADD TO MIDDLE OF PRODUCT
 1330         ADC B
 1340         STA P+1
 1350         BCC .4
 1360         INC P+3      (NEVER BOTHERS P+4)
 1370  *--------------------------------
 1380  .4     DEX
 1390         BNE .1
 1400         SEC
 1410         XCE
 1420         RTS
 1430  *--------------------------------
 1440  T
 1450         JSR MUL.EVEN.FASTER
 1460         LDA P+3
 1470         JSR PRB
 1480         LDA P+2
 1490         JSR PRB
 1500         LDA P+1
 1510         JSR PRB
 1520         LDA P+0
 1530  PRB    JMP $FDDA
 1540  *--------------------------------
 1550         .LIF

